package com.naiterui.ehp.bs.b2c.address.repository;

import java.util.List;

import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.naiterui.common.repository.core.BaseJpaRepository;
import com.naiterui.ehp.bs.b2c.address.entity.ShippingInfo;

/**
 * 地址簿
 *
 * @author guoyongxiang
 * @date 2019-01-12 13:24
 * @since 1.0.0
 */
@Repository
public interface ShippingInfoRepository extends BaseJpaRepository<ShippingInfo, Long> {

    /**
     * 获取指定用户地址簿
     *
     * @param userId
     *
     * @return
     */
    List<ShippingInfo> findAllByUserId(Long userId);

    /**
     * 根据地址ID+用户ID查询
     *
     * @param id
     * @param userId
     *
     * @return
     */
    ShippingInfo findByIdAndUserId(Long id, Long userId);

    /**
     * 获取指定用户默认地址
     *
     * @param userId
     * @param defaultAddr
     *
     * @return
     */
    ShippingInfo findByUserIdAndDefaultAddr(Long userId, Integer defaultAddr);

    /**
     * 更新默认地址
     *
     * @param defaultAddr
     * @param userId
     *
     * @return
     */
    @Modifying(clearAutomatically = true)
    @Query(value = "UPDATE ShippingInfo SET defaultAddr= :defaultAddr WHERE userId= :userId and defaultAddr= :cancelDefaultAddr")
    int updateDefaultAddr(@Param("defaultAddr") Integer defaultAddr, @Param("userId") Long userId,
                          @Param("cancelDefaultAddr") Integer cancelDefaultAddr);

    /**
     * 根据地址ID和用户ID删除地址记录
     *
     * @param id
     * @param userId
     *
     * @return
     */
    int deleteByIdAndUserId(Long id, Long userId);
}
